package cn.cleanarch.infra.idp.s3.service;

import cn.cleanarch.infra.idp.s3.domain.entity.S3AuditLog;

/**
 * S3审计服务接口
 */
public interface S3AuditService {

    /**
     * 记录S3操作日志
     *
     * @param auditLog 审计日志实体
     */
    void logOperation(S3AuditLog auditLog);

    /**
     * 记录文件上传操作
     *
     * @param userId 用户ID
     * @param username 用户名
     * @param businessType 业务类型
     * @param fileName 文件名
     * @param fileSize 文件大小
     * @param objectKey 对象键
     * @param s3ConfigId S3配置ID
     * @param ipAddress IP地址
     * @param userAgent 用户代理
     * @param executionTime 执行时间
     * @param status 操作状态
     * @param errorMessage 错误信息
     */
    void logUploadOperation(Long userId, String username, String businessType, String fileName, 
                           Long fileSize, String objectKey, Long s3ConfigId, String ipAddress, 
                           String userAgent, Long executionTime, String status, String errorMessage);

    /**
     * 记录文件删除操作
     *
     * @param userId 用户ID
     * @param username 用户名
     * @param businessType 业务类型
     * @param objectKey 对象键
     * @param s3ConfigId S3配置ID
     * @param ipAddress IP地址
     * @param userAgent 用户代理
     * @param executionTime 执行时间
     * @param status 操作状态
     * @param errorMessage 错误信息
     */
    void logDeleteOperation(Long userId, String username, String businessType, String objectKey, 
                           Long s3ConfigId, String ipAddress, String userAgent, 
                           Long executionTime, String status, String errorMessage);
}